package cn.trs.common.utils;

public class Base62Converter {

    // 定义62进制字符集
    private static final String BASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    // 将int转换为62进制
    public static String toBase62(long num) {
        // 如果输入为0，直接返回字符'0'
        if (num == 0) {
            return "0";
        }

        StringBuilder result = new StringBuilder();
        // 用于处理负数
        boolean isNegative = num < 0;
        if (isNegative) {
            num = -num;
        }

        // 进行进制转换
        while (num > 0) {
            result.append(BASE62.charAt((int)(num % 62)));
            num /= 62;
        }

        // 如果是负数，添加负号
        if (isNegative) {
            result.append("-");
        }

        // 由于是从低位往高位添加，最终需要反转字符串
        return result.reverse().toString();
    }
}
